home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr47 / wasm223.zip / FLASH.ASM < prev    next >
Assembly Source File  |  1993-05-04  |  2KB  |  60 lines

  1.  
  2. ;CLOCK EXAMPLE BY D. E. JOHNSON
  3. ;ILLUSTRATE INTERRUPT SET-UP/OPERATION
  4. ;CLOCK = TYPE 8 INTERRUPT
  5. ;ATTRIBUTE OF FIRST CHAR CHANGES EVERY SECOND
  6. ;UNTIL A KEY IS PRESSED (THEN EXIT)
  7.     MOV    AL,36H    ;CNT0 CONTROL
  8.     OUT    43H,AL    ;SET FOR WORD TRANSFER
  9.     MOV    AX,11925 ;COUNTS PER PERIOD
  10.     OUT    40H,AL    ;LSB TO CNT0
  11.     MOV    AL,AH
  12.     OUT    40H,AL    ;MSB (CYCLE = .01 SEC)
  13.     MOV    BX,2    ;CLEAR BH & SET ADDR
  14.     MOV    DS,BX    ;TO DS:BX (=00022H)
  15.     PUSH WORD [BX]    ;SAVE OLD CLK-CS
  16.     PUSH WORD [BX-2] ;& OLD CLK-IP
  17.     CLI        ;NO INTERRUPTS HERE
  18.     MOV    [BX],CS ;SET NEW CLK-CS
  19.     MOV WORD [BX-2],OFFSET CLKINT ;& CLK-IP
  20.     STI        ;INTERRUPTS O. K.
  21.     MOV    AX,0B800H ;VIDEO MEMORY
  22.     MOV    ES,AX
  23.     PUSH    CS    ;DS <-- CS
  24.     POP    DS    ;NORMAL DATA
  25.     MOV    CX,100    ;TICKS PER SECOND
  26. ;BH holds the previous CNT value (0 initially)
  27. REPT    MOV    AL,CNT    ;CHECK FOR CHANGE
  28.     CMP    AL,BH    ;DIFFERENT?
  29.     JE    UNTIL
  30.     MOV    BH,AL    ;FOR NEXT CHANGE TEST
  31.     LOOP    UNTIL    ;EVERY .01 SEC 
  32.     MOV    CL,100    ;RESET COUNTER EACH SEC
  33.     SEG    ES
  34.     XOR BYTE [1],77H ;REVERSE 1ST ATTRIB.
  35. UNTIL    MOV    AH,1
  36.     INT    16H    ;CHECK FOR KEYPRESS
  37.     JZ    REPT    ;UNTIL KEYPRESSED
  38. ;RESTORE & EXIT
  39.     MOV    AL,0
  40.     OUT    40H,AL    ;65536 COUNTS/CYCLE
  41.     OUT    40H,AL    ;ORIGINAL VALUE
  42.     MOV    BH,0    ;BX=2 yet
  43.     MOV    DS,BX    ;TO DS:BX (=00022H)
  44.     CLI
  45.     POP WORD [BX-2] ;RESTORE CLK-IP
  46.     POP WORD [BX]    ;& CLK-CS
  47.     STI
  48.     RETN        ;DOS RETURN
  49. ;*********INTERRUPT ROUTINE********************
  50. CLKINT    PUSH    AX    ;SAVE REG USED
  51.     SEG    CS    ;VARS IN CS (=ORIG. DS)
  52.     INC BYTE CNT    ;CHANGE EACH INTERRUPT
  53.     MOV    AL,20H    ;ACKNOWLEDGE CODE TO
  54.     OUT    20H,AL    ;INTERRUPT CONTROLLER
  55.     POP    AX
  56.     IRET        ;RESTORE IP, CS & FLAGS
  57. ;************DATA VARIABLE*********************
  58. CNT    DB    0    ;INIT 0, INC EACH INT 8
  59.  
  60.